IMU
Table of Content
LAB#
- Add IMU sensor to sdf
- Bridge to ROS2
- Show in RVIZ
sdf#
- Add sensor sdf under
link - Add imu plugin
Add plugin tag under world tag
<plugin filename="libignition-gazebo-imu-system.so"
name="ignition::gazebo::systems::Imu">
</plugin>
Add sensor to imu_link tag
<sensor name="imu_sensor" type="imu">
<always_on>1</always_on>
<update_rate>1</update_rate>
<visualize>true</visualize>
<topic>imu</topic>
</sensor>
Check this link for more info#
tf#
- Add static tf between sensor frame to link frame
static tf
Sensor has fix frame_id, set from it’s location We need to set static tf form link frame to sensor frame_id
imu_tf = Node(
package='tf2_ros',
executable='static_transform_publisher',
name="imu2imu_link",
arguments = ["0", "0", "0", "0", "0", "0", "imu_link", "basic_mobile_bot/imu_link/imu"]
)

bridge#
- Add imu msg bridge
- Set QoS to best_effort
- Add tf static transform from
imu_linkto sensor frame_idbasic_mobile_bot/imu_link/imu
bridge
imu_bridge = Node(
package='ros_gz_bridge',
executable='parameter_bridge',
arguments=['/imu@sensor_msgs/msg/Imu@gz.msgs.IMU'],
output='screen',
parameters=[{
'use_sim_time': use_sim_time,
'qos_overrides./imu.publisher.reliability': 'best_effort'
}]
)
before qos convert
ros2 topic info /imu --verbose
Type: sensor_msgs/msg/Imu
Publisher count: 1
Node name: ros_gz_bridge
Node namespace: /
Topic type: sensor_msgs/msg/Imu
Endpoint type: PUBLISHER
GID: 01.0f.64.c6.90.63.0b.31.01.00.00.00.00.00.14.03.00.00.00.00.00.00.00.00
QoS profile:
Reliability: RELIABLE
History (Depth): UNKNOWN
Durability: VOLATILE
Lifespan: Infinite
Deadline: Infinite
Liveliness: AUTOMATIC
Liveliness lease duration: Infinite
imu message after qos convert
ros2 topic info /imu --verbose
#
Type: sensor_msgs/msg/Imu
Publisher count: 1
Node name: ros_gz_bridge
Node namespace: /
Topic type: sensor_msgs/msg/Imu
Endpoint type: PUBLISHER
GID: 01.0f.64.c6.fb.16.9f.99.01.00.00.00.00.00.14.03.00.00.00.00.00.00.00.00
QoS profile:
Reliability: BEST_EFFORT
History (Depth): UNKNOWN
Durability: VOLATILE
Lifespan: Infinite
Deadline: Infinite
Liveliness: AUTOMATIC
Liveliness lease duration: Infinite
usage#
terminal1
ros2 launch ign_tutorial ign.launch.py with_bridge:=true
terminal2
ros2 run rqt_robot_steering rqt_robot_steering
terminal3
rviz
